#include <libubox/vlist.h>
#include "odhcpd.h"
+#include "router.h"
#include "dhcpv6-pxe.h"
static struct blob_buf b;
iface->ra_flags = ND_RA_FLAG_OTHER;
iface->ra_slaac = true;
iface->ra_maxinterval = 600;
+ /*
+ * RFC4861: MinRtrAdvInterval: Default: 0.33 * MaxRtrAdvInterval If
+ * MaxRtrAdvInterval >= 9 seconds; otherwise, the Default is MaxRtrAdvInterval.
+ */
iface->ra_mininterval = iface->ra_maxinterval/3;
- iface->ra_lifetime = -1;
+ iface->ra_lifetime = 3 * iface->ra_maxinterval; /* RFC4861: AdvDefaultLifetime: Default: 3 * MaxRtrAdvInterval */
iface->ra_dns = true;
iface->pio_update = false;
}
if (*maxival > lowest_found_lifetime)
*maxival = lowest_found_lifetime;
- if (*maxival > MaxRtrAdvInterval)
- *maxival = MaxRtrAdvInterval;
- else if (*maxival < 4)
- *maxival = 4;
-
- if (minival < MinRtrAdvInterval)
- minival = MinRtrAdvInterval;
- else if (minival > (*maxival * 3)/4)
- minival = (*maxival >= 9 ? *maxival/3 : *maxival);
-
odhcpd_urandom(&msecs, sizeof(msecs));
msecs = (labs(msecs) % ((*maxival != minival) ? (*maxival - minival)*1000 : 500)) +
minival*1000;